<?php


/**
*	@功能:		给图片加上水印图片
*	@param1:	目标大图文件路径
*	@param2:	水印小图文件路径
*	@param3:	水印的在大图上面的位置 (0~9: 0 为随机位置)
*	@param4:	合成的图片文件名,是否随机
*	@param5:	新文件的图片类型 
*	@param6:	新文件保存的文件路径名
*	@param7:	水印的透明度 (0~100: 100 不透明, 0 是透明)
*	@返回值:	含水印的合成图片
*
*/

//调用水印函数
//water('./ya.jpeg','./water.png',$position = 1 , $alpha = 50, $type = 'jpeg' , $savePath = './save',$isRand = true);

function water($dstPath, $waterPath , $position = 9 , $alpha = 20 , $type = 'png' , $savePath = './save', $isRand = false) {
	
	
	//打开目标图片 和 水印图片
	$dst = openAny($dstPath);
	$water = openAny($waterPath);
	
	//获取大图片的宽,高, 小图片的宽,高
	list($dstWidth, $dstHeight) = getimagesize($dstPath);
	list($waterWidth, $waterHeight) = getimagesize($waterPath);
	
	//选择添加水印的位置
	switch ($position) {
		
		case 0:
			$x = mt_rand(0 , $dstWidth - $waterWidth);
			$y = mt_rand(0 , $dstHeight - $waterHeight);
			break;
		case 1:
			$x = 0;
			$y = 0;
			break;
		
		case 2:
			$x = ($dstWidth - $waterWidth) / 2;
			$y = 0;
			break;
		
		case 3:
			$x = $dstWidth - $waterWidth;
			$y = 0;
			break;
		
		case 4:
			$x = 0;
			$y = ($dstHeight - $waterHeight) / 2;
			break;
		
		case 5:
			$x = ($dstWidth - $waterWidth) / 2;
			$y = ($dstHeight - $waterHeight) / 2;
			break;
		
		case 6:
			$x = $dstWidth - $waterWidth;
			$y = ($dstHeight - $waterHeight) / 2;
			break;
		
		case 7:
			$x = 0;
			$y = $dstHeight - $waterHeight;
			break;
		
		case 8:
			$x = ($dstWidth - $waterWidth) / 2;
			$y = $dstHeight - $waterHeight;
			break;
		
		case 9:
			$x = $dstWidth - $waterWidth;
			$y = $dstHeight - $waterHeight;
			break;
		
		default:
			$x = mt_rand(0 , $dstWidth - $waterWidth);
			$y = mt_rand(0 , $dstHeight - $waterHeight);
			break;

	}
	//给大图添加水印
	imagecopymerge($dst , $water , $x , $y , 0 , 0, $waterWidth, $waterHeight, $alpha);
	
	//判断新的图片名是否随机
	if ($isRand) {
		
		$name = uniqid() . '.' . $type;
	} else {
		
		$name = pathinfo($dstPath)['filename'] . '.' . $type;
	}
	
	//拼接新文件的保存路径
	$filePath = trim($savePath , '/') . '/' . $name;
	
	//保存新图片
	$func =  'image'.$type;
	$func($dst, $filePath);
	
	//销毁图片
	imagedestroy($dst);
	imagedestroy($water);
}






//封装一个可以打开所有种图片的函数
/**
*	@功能:	 将文件路径转化为资源(此处为图片)文件
*	@param1: 文件路径
*	@返回值: 资源文件
*/

function openAny($imagePath) {
	
	$mime = getimagesize($imagePath)['mime'];

	//根据不同图片格式,创建出不同的资源文件
	switch ($mime) {
		
		case 'image/png': 
			$image = imagecreatefrompng($imagePath);
			break;
			
		case 'image/jpeg': 
		case 'image/jpg': 
		case 'image/jpe':
			$image = imagecreatefromjpeg($imagePath);
			break;
		
		case 'image/wbmp': 
		case 'image/bmp': 
			$image = imagecreatefromwbmp($imagePath);
			break;
		
		case 'image/gif':
			$image = imagecreatefromgif($imagePath);
			break;
				
	}
	return $image;
}
